package cn.kkcxy.blog.system.service.article;

import cn.kkcxy.blog.core.dto.client.ClientArticleCategoryQueryParamsDTO;
import cn.kkcxy.blog.core.dto.client.ClientArticleTagsRequestDTO;
import cn.kkcxy.blog.core.entity.article.Article;
import cn.kkcxy.blog.core.vo.client.archive.ClientArticleArchiveVO;
import cn.kkcxy.blog.core.vo.client.archive.category.ClientArticleCategoryParentInfoVO;
import cn.kkcxy.blog.core.vo.client.archive.category.ClientArticleCategoryVO;
import cn.kkcxy.blog.core.vo.client.archive.tag.ClientArticleTagsVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author kk
* @description 针对表【article】的数据库操作Service
* @createDate 2024-09-18 00:25:54
*/
public interface ArticleService extends IService<Article> {

    /**
     * @description: [用户端] 获取文章归档数据
     * @author: kkcxy
     * @date: 2024/9/18 1:57
     * @param: []
     * @return: cn.kkcxy.blog.core.vo.client.archive.ClientArticleArchiveVO
     **/
    List<ClientArticleArchiveVO> getArticleArchiveData();

    /**
     * @description: [用户端] 获取文章分类列表数据
     * @author: kkcxy
     * @date: 2024/9/19 2:14
     * @param: [clientArticleCategoryQueryParamsDTO]
     * @return: java.util.List<cn.kkcxy.blog.core.vo.client.archive.category.ClientArticleCategoryVO>
     **/
    ClientArticleCategoryVO getArticleCategoryListData(ClientArticleCategoryQueryParamsDTO clientArticleCategoryQueryParamsDTO);

    /**
     * @description: [用户端] 获取文章标签列表数据
     * @author: kkcxy
     * @date: 2024/9/21 0:37
     * @param: [clientArticleTagsRequestDTO]
     * @return: cn.kkcxy.blog.core.vo.client.archive.tag.ClientArticleTagsVO
     **/
    ClientArticleTagsVO getArticleTagsListOrArticleList(ClientArticleTagsRequestDTO clientArticleTagsRequestDTO);

    /**
     * @description: [用户端] 获取父级分类信息根据分类名称
     * @author: kkcxy
     * @date: 2024/9/24 0:51
     * @param: [categoryName]
     * @return: cn.kkcxy.blog.core.vo.client.archive.category.ClientArticleCategoryParentInfoVO
     **/
    ClientArticleCategoryParentInfoVO getArticleCategoryParentInfoByCategoryName(String categoryName);

    /**
     * @description: 得到文章总数
     * @author: kkcxy
     * @date: 2024/9/28 23:28
     * @param: []
     * @return: java.lang.Integer
     **/
    Integer getArticleCount();
}
